A multi-tenant architecture provides a means for multiple accounts (tenants) and users to store and access their data, and to utilize specific applications that reside on a remote platform. The platform is typically implemented as a set of servers or server groups, and is administered and operated by another party that provides use of the platform infrastructure as a service to the accounts and each account's users. This service may provide data storage, computational processing power, data analytics, and applications or workflows that may be executed with reference to an account's data (in whole or in part, and account-wide or user-specific). In some cases, such services have been described as Software-as-a-Service (SaaS), cloud-based services, web-services, or remote services.
The applications that reside on a platform may be used to process certain of a user's data by instantiating an occurrence of the application within the user's account; for these types of uses, the applications may include ones utilized to operate a business, such as ERP, CRM, HR (HCM), eCommerce, and financial applications. Tenant customizations to the operation of the architecture may include custom functionality (such as the capability to perform tenant or user-specific functions, workflows, data processing, or operations) built on top of lower level operating system functions.
Some multi-tenant service platforms may offer the ability to customize functions or operations at several different levels of the service platform, from aesthetic modifications to a graphical user interface to providing integration of components and/or entire applications developed by independent third party vendors. This can be very beneficial, since by permitting use of components and/or applications developed by third party vendors, a multi-tenant service can significantly enhance the functionality available to tenants and increase tenant satisfaction with the platform.
In other cases, the applications may be ones used by a platform operator or administrator to manage the platform's operation, such as by managing the allocation of the resources available to the platform users. In this use case, the applications may be used to monitor events within a set of the users of an account, to manage an aspect of an account or set of accounts, or to determine metrics relating to the events initiated by a user, a set of users, an account, or a set of accounts, etc. In such cases, the resources being allocated and re-allocated may include access to computational data processing capabilities, data storage capacity, pre-processing/optimization techniques, etc., and may be distributed among multiple sources (servers, server groups, data storage elements, etc.).
Platform operators and administrators need to be able to alter how platform resources are allocated to (and used by) each account or a set of accounts in order to ensure optimal use of the resources, respond to system operational problems, or to execute a business plan involving segmented levels/qualities of service. Embodiments of the inventive system and methods are directed to providing ways to characterize resource usage data by account or tenant, and to process that data to enable platform operators and administrators to make more optimal decisions regarding allocation or allocation changes for platform infrastructure resources. Such decisions may involve placement of a new tenant or set of users' accounts on a specific server or server group, reallocation of one or more accounts, tenants, or users to a specific server or server group, or adjusting constraints or conditions on a tenant's or a set of users' access to certain platform resources.
Embodiments of the inventive system and methods are directed to overcoming the limitations associated with conventional approaches to providing these management capabilities, both individually and collectively.